package org.belkodevelop.announcement.dao;

import java.util.List;
import org.belkodevelop.announcement.domain.Announcement;
import org.belkodevelop.announcement.domain.OperationEnum;
import org.belkodevelop.geocoding.adress.domen.CompositeAdress;
import org.belkodevelop.realty.factory.RealtyEnum;

public interface AnnouncementDAO {
    Announcement getAnnouncement(long id);
    
    void saveAnnouncement(Announcement announcement);
    
    boolean removeAnnouncement(long id);

    List<Announcement> getAnnouncementsByUser(long id);
    
    List<Announcement> find(CompositeAdress compositeAdress, RealtyEnum type, Double priceFrom, Double priceTo, OperationEnum operation);

    Float getMaxPriceForRent();

    Float getMaxPriceForSale();

    void incrementRatingById(long id);

    List<Announcement> getPremiunAnnouncements();
}
